from get_data import GetData

datas2 = GetData()
datas2.get_data()
data2 = datas2.used_data()


class MappingName:
    def __init__(self):
        self.country_names = []
        self.data_out = data2[1]

    def country_name(self):
        data_out = self.data_out
        self.country_names = ([data_out[i]['area'] for i in range(len(data_out))])

    def modify_name(self):
        nameMap = {
            "Afghanistan": "阿富汗",
            "Angola": "安哥拉",
            "Albania": "阿尔巴尼亚",
            "United Arab Emirates": "阿拉伯联合酋长国",
            "Argentina": "阿根廷",
            "Armenia": "亚美尼亚",
            "French Southern and Antarctic Lands": "法属南半球和南极领地",
            "Australia": "澳大利亚",
            "Austria": "奥地利",
            "Azerbaijan": "阿塞拜疆",
            "Burundi": "布隆迪",
            "Belgium": "比利时",
            "Benin": "贝宁",
            "Burkina Faso": "布基纳法索",
            "Bangladesh": "孟加拉国",
            "Bulgaria": "保加利亚",
            "The Bahamas": "巴哈马",
            "Bosnia and Herzegovina": "波黑",
            "Belarus": "白俄罗斯",
            "Belize": "伯利兹",
            "Bermuda": "百慕大",
            "Bolivia": "玻利维亚",
            "Brazil": "巴西",
            "Brunei": "文莱",
            "Bhutan": "不丹",
            "Botswana": "博茨瓦纳",
            "Central African Republic": "中非共和国",
            "Canada": "加拿大",
            "Switzerland": "瑞士",
            "Chile": "智利",
            "China": "中国",
            "Ivory Coast": "象牙海岸",
            "Cameroon": "喀麦隆",
            "Dem. Rep. Congo": "刚果（金）",
            "Republic of the Congo": "刚果（布）",
            "Colombia": "哥伦比亚",
            "Costa Rica": "哥斯达黎加",
            "Cuba": "古巴",
            "Northern Cyprus": "北塞浦路斯",
            "Cyprus": "塞浦路斯",
            "Czech Republic": "捷克",
            "Germany": "德国",
            "Djibouti": "吉布提",
            "Denmark": "丹麦",
            "Dominican Republic": "多米尼加共和国",
            "Algeria": "阿尔及利亚",
            "Ecuador": "厄瓜多尔",
            "Egypt": "埃及",
            "Eritrea": "厄立特里亚",
            "Spain": "西班牙",
            "Estonia": "爱沙尼亚",
            "Ethiopia": "埃塞俄比亚",
            "Finland": "芬兰",
            "Fiji": "斐济",
            "Falkland Islands": "福克兰群岛马尔维纳斯",
            "France": "法国",
            "Gabon": "加蓬",
            "United Kingdom": "英国",
            "Georgia": "格鲁吉亚",
            "Ghana": "加纳",
            "Guinea": "几内亚",
            "Gambia": "冈比亚",
            "Guinea Bissau": "几内亚比绍",
            "Equatorial Guinea": "赤道几内亚",
            "Greece": "希腊",
            "Greenland": "格陵兰岛",
            "Guatemala": "危地马拉",
            "French Guiana": "法属圭亚那",
            "Guyana": "圭亚那合作共和国",
            "Honduras": "洪都拉斯",
            "Croatia": "克罗地亚",
            "Haiti": "海地",
            "Hungary": "匈牙利",
            "Indonesia": "印度尼西亚",
            "India": "印度",
            "Ireland": "爱尔兰",
            "Iran": "伊朗",
            "Iraq": "伊拉克",
            "Iceland": "冰岛",
            "Israel": "以色列",
            "Italy": "意大利",
            "Jamaica": "牙买加",
            "Jordan": "约旦",
            "Japan": "日本",
            "Kazakhstan": "哈萨克斯坦",
            "Kenya": "肯尼亚",
            "Kyrgyzstan": "吉尔吉斯斯坦",
            "Cambodia": "柬埔寨",
            "South Korea": "韩国",
            "Kosovo": "科索沃",
            "Kuwait": "科威特",
            "Laos": "老挝",
            "Lebanon": "黎巴嫩",
            "Liberia": "利比里亚",
            "Libya": "利比亚",
            "Sri Lanka": "斯里兰卡",
            "Lesotho": "莱索托",
            "Lithuania": "立陶宛",
            "Luxembourg": "卢森堡",
            "Latvia": "拉脱维亚",
            "Morocco": "摩洛哥",
            "Moldova": "摩尔多瓦",
            "Madagascar": "马达加斯加",
            "Mexico": "墨西哥",
            "Macedonia": "马其顿",
            "Mali": "马里",
            "Myanmar": "缅甸",
            "Montenegro": "黑山",
            "Mongolia": "蒙古国",
            "Mozambique": "莫桑比克",
            "Mauritania": "毛里塔尼亚",
            "Malawi": "马拉维",
            "Malaysia": "马来西亚",
            "Namibia": "纳米比亚",
            "New Caledonia": "新喀里多尼亚",
            "Niger": "尼日尔",
            "Nigeria": "尼日利亚",
            "Nicaragua": "尼加拉瓜",
            "Netherlands": "荷兰",
            "Norway": "挪威",
            "Nepal": "尼泊尔",
            "New Zealand": "新西兰",
            "Oman": "阿曼",
            "Pakistan": "巴基斯坦",
            "Panama": "巴拿马",
            "Peru": "秘鲁",
            "Philippines": "菲律宾",
            "Papua New Guinea": "巴布亚新几内亚",
            "Poland": "波兰",
            "Puerto Rico": "波多黎各",
            "North Korea": "朝鲜",
            "Portugal": "葡萄牙",
            "Paraguay": "巴拉圭",
            "Qatar": "卡塔尔",
            "Romania": "罗马尼亚",
            "Russia": "俄罗斯",
            "Rwanda": "卢旺达",
            "Western Sahara": "西撒哈拉",
            "Saudi Arabia": "沙特阿拉伯",
            "Sudan": "苏丹",
            "South Sudan": "南苏丹",
            "Senegal": "塞内加尔",
            "Solomon Islands": "所罗门群岛",
            "Sierra Leone": "塞拉利昂",
            "El Salvador": "萨尔瓦多",
            "Somaliland": "索马里兰",
            "Somalia": "索马里",
            "Republic of Serbia": "塞尔维亚",
            "Suriname": "苏里南",
            "Slovakia": "斯洛伐克",
            "Slovenia": "斯洛文尼亚",
            "Sweden": "瑞典",
            "Swaziland": "斯威士兰",
            "Syria": "叙利亚",
            "Chad": "乍得",
            "Togo": "多哥",
            "Thailand": "泰国",
            "Tajikistan": "塔吉克斯坦",
            "Turkmenistan": "土库曼斯坦",
            "East Timor": "东帝汶",
            "Trinidad and Tobago": "特立尼达和多巴哥",
            "Tunisia": "突尼斯",
            "Turkey": "土耳其",
            "United Republic of Tanzania": "坦桑尼亚",
            "Uganda": "乌干达",
            "Ukraine": "乌克兰",
            "Uruguay": "乌拉圭",
            "United States of America": "美国",
            "Uzbekistan": "乌兹别克斯坦",
            "Venezuela": "委内瑞拉",
            "Vietnam": "越南",
            "Vanuatu": "瓦努阿图",
            "West Bank": "西岸",
            "Yemen": "也门",
            "South Africa": "南非",
            "Zambia": "赞比亚",
            "Zimbabwe": "津巴布韦",
            "Singapore Rep.": "新加坡",
            "Dominican Rep.": "多米尼加",
            "Palestine": "巴勒斯坦",
            "Bahamas": "巴哈马",
            "Timor-Leste": "东帝汶",
            "Guinea-Bissau": "几内亚比绍",
            "Côte d'Ivoire": "科特迪瓦",
            "Siachen Glacier": "锡亚琴冰川",
            "Br. Indian Ocean Ter.": "英属印度洋领土",
            "Bosnia and Herz.": "波斯尼亚和黑塞哥维那",
            "Central African Rep.": "中非共和国",
            "Congo": "刚果（布）",
            "N. Cyprus": "北塞浦路斯",
            "Czech Rep.": "捷克",
            "Eq. Guinea": "赤道几内亚",
            "Korea": "韩国",
            "Lao PDR": "老挝",
            "Dem. Rep. Korea": "朝鲜",
            "W. Sahara": "西撒哈拉",
            "S. Sudan": "南苏丹",
            "Solomon Is.": "所罗门群岛",
            "Serbia": "塞尔维亚",
            "Tanzania": "坦桑尼亚",
            "United States": "美国",
            "The Islands of st pierre and miquelon，Iles Saint pierre et Mique lon": "圣皮埃尔",
            "The Democratic Republic of Sao Tome and Principe": "圣多美和普林西比",
            "The British Virgin Islands": "英属维尔京群岛",
            "Anguilla": "安圭拉",
            "Grenada": "格林纳达",
            "The Federation of Saint Kitts and Nevis": "圣基茨和尼维斯",
            "The Turks and Caicos Islands": "特克斯和凯科斯群岛",
            "The Commonwealth of Dominica": "多米尼克",
            "Isle of Man": "马恩岛",
            "The Republic of Cabo Verde": "佛得角",
            "Montserrat": "蒙特塞拉特",
            "The Republic of Mauritius": "毛里求斯",
            "Guernsey": "格恩西岛",
            "Barbados ": "巴巴多斯",
            "Territorial Collectivity of Mayotte": "马约特",
            "Guadeloupe": "瓜德罗普",
            "Cayman Islands": "开曼群岛",
            "Republic of Seychelles": "塞舌尔",
            "Aruba": "阿鲁巴",
            "Diamond Princess": "钻石公主号邮轮",
            "Curaçao": "库拉索",
            "Saint Lucia": "圣卢西亚",
            "Saint Vincent and the Grenadines": "圣文森特和格林纳丁斯",
            "Jersey": "泽西岛",
            "Antigua and Barbuda": "安提瓜和巴布达",
            "French Polynesia": "法属波利尼西亚",
            "Reunion Island": "留尼汪岛",
            "Saint Martin": "圣马丁岛",
            "Saint Barthelemy": "圣巴泰勒米岛",
            "Martinique": "马提尼克",
            "Faroe Islands": "法罗群岛",
            "The Republic of Maldives": "马尔代夫",
            "Republic of Malta": "马耳他",
            "Vatican City State": "梵蒂冈",
            "Gibraltar": "直布罗陀",
            "Principality of Liechtenstein": "列支敦士登",
            "The Principality of Andorra": "安道尔",
            "The Republic of San Marino": "圣马力诺",
            "The Principality of Monaco": "摩纳哥",
            "The Republic of North Macedonia": "北马其顿",
            "The Kingdom of Bahrain": "巴林",
            "Channel Islands": "海峡群岛",
            "Comoros": "科摩罗"
        }
        namemap_vk = {v: k for k, v in nameMap.items()}  # 字典的 key 与 value 互换
        dic_keys = list(namemap_vk.keys())  # nameMap 里的中文国名
        country_name_zh = [x for x in self.country_names]  # 中文国名
        country_en = []
        country_index = []

        for x in dic_keys:
            for y in country_name_zh:
                if y == x:
                    country_en.append(namemap_vk[x])  # 获取对应的value: 英文名
                    country_index.append(country_name_zh.index(y))  # 获取数据国名对应的 索引

        mapping = {}
        for key, value in zip(country_index, country_en):  # 以索引为key创建 字典
            mapping[key] = value

        country_name_en = []
        for i in range(len(country_name_zh)):  # 用 key 与 数据的列表的顺序 进行匹配，确保顺序不变，保证与confirmed对应上
            if i in mapping.keys():
                country_name_en.append(mapping[i])  # 循环匹配，对应的获取 value；不对应输出中文名称，手动对nameMap进行完善
            else:
                print("新增地区:", self.country_names[i])
        return country_name_en


if __name__ == "__main__":
    mapname = MappingName()
    mapname.country_name()
    mapname.modify_name()
